Skip to content

Conversation

mariehd
Copy link
Member

@mariehd mariehd commented Nov 4, 2026 •

Hva er endret?

Begrenset antall resultater som kan hentes per GraphQL-forespørsel, forbedret håndtering av spesialtegn i søk og rettet feil som ble oppdaget under code review.

  • Lagt til en maksgrense på 100 resultater per forespørsel for countries og cities. Standardgrensen er fortsatt 20.
  • Sørget for at %, _ og \ behandles som vanlige tegn i søk, i stedet for jokertegn i SQL.
  • Begrenset negative offset-verdier til 0 for å unngå databasefeil.
  • Rettet UUID-valideringen, slik at gyldige bruker-ID-er godtas igjen.
  • Flyttet UUID-valideringen til userId.ts for enklere testing.
  • Samlet hjelpefunksjoner for limit, offset og søkeescaping i queryInput.ts.
  • Oppdatert både server.ts og app.ts.
  • Lagt til kommentarer som forklarer SQL-escapingen.
  • Utvidet API-testene og oppdatert README.

Refaktorering for å samle GraphQL-resolverne i én felles implementasjon tas videre i issue #74. Denne PR-en kan derfor merges uavhengig av #74.

Type endring

  • Frontend
  • Backend / GraphQL
  • Database
  • Konfig / verktøy
  • Dokumentasjon
  • Bug / fix
  • Tester

Test endringene

  • Kjør npm run lint for å sjekke kodekvalitet med ESLint.
  • Kjør npm run format:check for å sjekke formatering med Prettier.
  • Kjør npm run build for å kontrollere TypeScript og produksjonsbygget.
  • Kjør npm test for å kjøre automatiserte tester med Vitest.
  • Kjør npm run test:api for å kjøre API-testene.

Alle 34 frontend-tester og 23 API-tester har bestått.

API-testene dekker blant annet:

  • Maksgrense for limit.
  • Negative offset-verdier.
  • Søk med %, _ og backslash.
  • Enhetstester for normalizeLimit, normalizeOffset, escapeLikeSearch og UUID-validering.
  • Eksisterende funksjonalitet som søk, filtrering og paginering.

Sjekkliste

  • Endringene er testet, eller eventuelle begrensninger er beskrevet.
  • Dokumentasjonen er oppdatert dersom det er nødvendig.
  • Ingen utilsiktede endringer er inkludert.

Closes #73

@mariehd mariehd self-assigned this Nov 4, 2026
@mariehd mariehd requested a review from a team as a code owner November 4, 2026 15:09
@mariehd mariehd linked an issue Nov 4, 2026 that may be closed by this pull request
4 tasks
Copy link
Member

@ellahw ellahw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fin og ryddig PR! Det er bra at hjelpefunksjonene er samlet i queryInput.ts, og testene med lookalikes (Rate 100X, CodeXA) viser at % og _ faktisk tolkes som vanlige tegn. Lint, Prettier og alle 17 API-testene besto lokalt hos meg.

Må fikses før merge:

  • UUID_PATTERN i server.ts har fått en ekstra -[0-9a-f]{4}-gruppe (commit a203bd4). Den avviser nå ekte UUID-er, så userId blir alltid null og status for land slutter å virke. Ser ut som en utilsiktet endring.

Bør vurderes:

  • Testene går mot resolverne i app.ts, men produksjon kjører server.ts. Endringene i server.ts er derfor ikke testet, og det er derfor UUID-feilen ikke ble fanget. Forslag: egen issue for å samle resolverne ett sted.
  • offset er ikke begrenset, så offset: -1 gir en databasefeil tilbake til klienten.

Småting (valgfritt):

  • Backslash-escaping er nevnt i README, men ikke testet.
  • Limit-testen bruker params?.at(-2) og avhenger av rekkefølgen på parameterne. Egne enhetstester for normalizeLimit og escapeLikeSearch hadde vært mer robust.
  • En kort kommentar på ESCAPE E'\\' hadde gjort den lettere å lese.
  • En ekstra tom linje i testDb.ts som ikke hører til endringen.

@mariehd
Copy link
Member Author

mariehd commented Nov 5, 2026

Har nå oppdatert PR-beskrivelsen også. Alle punktene fra reviewen er håndtert, bortsett fra samlingen av resolverne som jeg tar i #74. Kan du reviewe på nytt @ellahw ?:)

Copy link
Member

@ellahw ellahw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ser bra ut nå! UUID-feilen er rettet og har fått tester, og offset og backslash er håndtert. Lint, Prettier, build og alle tester (23 API + 34 frontend) går gjennom lokalt. Noen småting som kan tas senere eller i en liten commit: samme describe-navn i to testfiler, JSDoc i userId.ts står over konstanten i stedet for funksjonen, og backslash-testen hardkoder 'Norway'/'Oslo' i stedet for å bruke fixtures. Vi bør også lage en issue for å samle resolverne i app.ts og server.ts.

@mariehd
Copy link
Member Author

mariehd commented Nov 5, 2026

Har nå fikset de siste småtingene også: ulike describe-navn, flyttet JSDoc-kommentaren og brukt fixtures i backslash-testen. Alle 23 API-tester og 34 frontend-tester består, i tillegg til lint, Prettier og build. PR-en er klar for ny review, @ellahw 😊

@mariehd mariehd changed the title [fix] Begrens limit og escape spesialtegn i søk (#73) [fix] Begrens limit og escape spesialtegn i søk Nov 5, 2026
@mariehd mariehd requested a review from ellahw November 5, 2026 16:39
Sign in to join this conversation on GitHub.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[fix] Begrens limit og escape spesialtegn i søk
3 participants